/* 
 * File:   Revert.cpp
 * Author: maximiliano
 * 
 * Created on March 26, 2013, 5:43 PM
 */

#include "Revert.h"

using namespace TP3::Mangling;

Revert::Revert(int times) {
    _times = times;
}

UnitOfWork* Revert::setUnitOfWork (UnitOfWork* work){
    _work = work;
    return work;
}

Revert::~Revert() {
}

string& Revert::run (string& operating){

    /* 1) Realiza tantos undo sobre la unidad de trabajo como se hayan indicado en las definiciones
     * 2) Obtiene el estado actual del operando de la unidad de trabajo.
     * 3) Copia el estado actual del operando al operando.
     * 4) Retorna el operando.
     */
    for (int x = 0; x < _times; x++)
    {
        _work->undo();
    }
    
    operating = _work->getCurrentState();
    
    return operating;
}

string Revert::getName(){

    return "revert";
}